In recent years, there have been dramatic improvements in technologies that make bandwidth available for data transmission. These improvements have resulted in ubiquitous networks, such as the Internet, and have brought about rapid change in the operation of numerous industries including the software industry.
Conventionally, the software industry has developed application software for proprietary operating systems. Application software was then conventionally hosted on mainframe computers with output from software applications provided to character based terminals pursuant to proprietary protocols.
With the advent of inexpensive personal computers, this mainframe application software delivery model changed to a client-server model in which application software developers distributed application software programs to end users. In the latter scenario, the end users loaded or downloaded the application software on their computer, a “fat client” machine, and ran the application software directly on a proprietary operating system such as Microsoft Windows or Unix.
Some of the application programs in a client-server model reside on a fat client and require interaction with network resources, such as programs and data resident on servers within the network. In other client—server models, the application programs reside on the server and are provided to the client system with the aid of emulation software on the client system.
With the advent of the Internet and the world-wide web, client systems have been implementing browser programs to present information received from a network to users. The browser programs include an application program interface (API) that programmers may use to create plug-ins that enable browsers to render previously unrecognized information, to recognize new communications protocols and to execute applications. Browser programs, supplemented with plug-ins as necessary, provide the flexibility to interact with software applications that are remotely executed on a network. Moreover, on the server side, an application program that was written for a proprietary operating system or display protocol may be web enabled and provided to browsers on remote client systems over a network. This entails translating the output from the application program into a protocol that is recognized by the browser program or an associated plug in.
The ability to web enable existing applications and remotely host them on a network provides advantages to application software vendors as well as end users of the software. Businesses called application service providers (ASPs) have arisen to facilitate providing application software to end users and their organizations over a network and, in some cases, to facilitate web enabling of software applications. ASP businesses allow users and their organizations the flexibility to rent, as opposed to purchase, software, to avoid time consuming installations of software on client systems and to order and use software on an as needed basis. For organizations, use of an ASP may effectively represent an outsourcing of maintenance operations and information services to the ASP. ASPs also allow software vendors additional software distribution channels from which to derive revenue from end users.
In order for ASP businesses to succeed in delivering software application service to end users, the ASP must be able to deliver reliable, high-performance, secure service that is convenient for organizations and users to configure. If any of these features is lacking, organizations and users may prefer local execution and control of the application software. ASP businesses must also confront problems of scalability, extensibility and integration. With respect to scalability, demand for application service for a particular ASP may exponentially increase several orders of magnitude over a short period of time. Therefore, scalability may be critical.
Accordingly, there is a need for an architecture and methods for providing application service that allow an ASP to commission new servers and equipment for delivering application service rapidly and without interrupting existing service. In addition, there is a need for robust architecture and methods that help prevent service disruption despite server and network link failures. There is a further need for an architecture and methods that make efficient use of server and other resources of the ASP in delivering service. There is still a further need for an architecture and methods that minimize administrative burdens associated with providing application service to organizations including, for example, burdens of providing users and organizations immediate and changeable access to applications and data associated with diverse proprietary operating systems, the ability to bill for service and to perform periodic data backups. There is still a further need for methods that maximize the value of the ASP architecture.
There is still a further need for an infrastructure that permits a user of application provision services to have organized access to the user's permitted applications and to be able to have one touch access to the best performing application server when launching a particular application available to the user.